#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;

struct ListNode
{
    int val;
    ListNode* next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode* next) : val(x), next(next) {}
};
 
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2)
    {
        /*if (list1 == nullptr && list2 == nullptr)
        {
            return nullptr;
        }
        if (list1 == nullptr || list2 == nullptr)
        {
            return list1 == nullptr ? list2 : list1;
        }

        ListNode* cur1 = list1;
        ListNode* cur2 = list2;
        ListNode* head = nullptr;
        ListNode* cur = head;
        while (cur1 && cur2)
        {
            if (cur1->val <= cur2->val)
            {
                if (head == nullptr)
                {
                    head = cur1;
                    cur = head;
                }
                else
                {
                    cur->next = cur1;
                    cur = cur1;
                }
                cur1 = cur1->next;
            }
            else
            {
                if (head == nullptr)
                {
                    head = cur2;
                    cur = head;
                }
                else
                {
                    cur->next = cur2;
                    cur = cur2;
                }
                cur2 = cur2->next;
            }
        }

        if (cur1)
        {
            cur->next = cur1;
        }
        else
        {
            cur->next = cur2;
        }

        return head;*/

        if (list1 == nullptr)
        {
            return list2;
        }

        if (list2 == nullptr)
        {
            return list1;
        }

        if (list1->val <= list2->val)
        {
            list1->next = mergeTwoLists(list1->next, list2);
            return list1;
        }
        else
        {
            list2->next = mergeTwoLists(list1, list2->next);
            return list2;
        }

    }

    ListNode* reverseList(ListNode* head)
    {
        if (head == nullptr || head->next == nullptr)
        {
            return head;
        }

        //ListNode* cur=head;
        //ListNode* curn=cur->next;
        ListNode* cur = nullptr;
        ListNode* curn = head;
        while (curn)
        {
            ListNode* Next = curn->next;
            curn->next = cur;
            cur = curn;
            curn = Next;
        }
        //head->next=nullptr;
        return cur;
    }
};



//int main()
//{
//    int n = 0;
//    cin >> n;
//    string str1, str2;
//    cin >> str1;
//    cin >> str2;
//
//    int i = 0;
//    vector<string> strs(n, string());
//    int x1 = -1, x2 = -1;
//    int minx = n;
//    for (i = 0; i < n; i++)
//    {
//        cin >> strs[i];
//
//        if (strs[i] == str1)
//        {
//            x1 = i;
//            if (x2 != -1 && x1 - x2 < minx)
//            {
//                minx = x1 - x2;
//            }
//        }
//        else if (strs[i] == str2)
//        {
//            x2 = i;
//            if (x1 != -1 && x2 - x1 < minx)
//            {
//                minx = x2 - x1;
//            }
//        }
//
//    }
//
//    if (minx == n)
//    {
//        cout << -1 << endl;
//    }
//    else
//    {
//        cout << minx << endl;
//    }
//
//    /*int i = 0;
//    vector<string> strs(n, string());
//    for (i = 0; i < n; i++)
//    {
//        cin >> strs[i];
//    }
//    if (str1.size() == 0 || str2.size() == 0)
//    {
//        cout << -1 << endl;
//        return 0;
//    }
//
//    int x1 = 0, x2 = 0;
//    int minx = n;
//    for (i = 0; i < n; i++)
//    {
//        if (strs[i] == str1)
//        {
//            x1 = i;
//        }
//        if (strs[i] == str2)
//        {
//            x2 = i;
//        }
//
//        if (x1 - x2 != 0 && abs(x1 - x2) < minx)
//        {
//            minx = abs(x1 - x2);
//        }
//    }
//
//    if (minx == n)
//    {
//        cout << -1 << endl;
//    }
//    else
//    {
//        cout << minx << endl;
//    }*/
//    return 0;
//}

//int main()
//{
//    string str;
//    getline(cin, str);
//
//    string ret;
//    int i = 0;
//    ret.push_back(toupper(str[i++]));
//    while (i < str.size())
//    {
//        if (str[i - 1] == ' ')
//        {
//            ret.push_back(toupper(str[i]));
//        }
//        i++;
//    }
//    cout << ret << endl;
//    return 0;
//}


int main()
{
    int n = 0, x = 0;
    cin >> n >> x;
    vector<int> v(n, 0);

    int i = 0;
    for (i = 0; i < n; i++)
    {
        cin >> v[i];
    }

    int l = 0, r = 0;
    int retl = 0, retr = 0;
    int minlen = n;
    int sum = 0;
    while (r < n)
    {
        sum += v[r];
        while (sum >= x)
        {
            if (r - l + 1 < minlen)
            {
                minlen = r - l + 1;
                retl = l;
                retr = r;
            }
            sum -= v[l];
            l++;
        }
        r++;
    }
    cout << retl << " " << retr << endl;
    return 0;
}